package org.dicr.util.jds.gui;

import java.awt.*;

import org.dicr.event.*;

import com.borland.dbswing.*;
import com.borland.dx.dataset.*;

/***********************************************************************************************************************
 * @author Igor A Tarasov
 * @version 021011
 **********************************************************************************************************************/
public class DataNavListPanel extends DataNavPanel {
	private static final long serialVersionUID = -4889512237734835331L;

	protected JdbNavList navList = new JdbNavList();

	/*******************************************************************************************************************
	 * Конструктор
	 ******************************************************************************************************************/
	public DataNavListPanel() {
		try {
			jbInit();
		} catch (Exception ex) {
			DicrExceptionHandler.handleException(ex, this);
		}
	}

	/*******************************************************************************************************************
	 * Инициализация
	 ******************************************************************************************************************/
	private void jbInit() {
		this.scrollPane.setViewportView(this.navList);
		this.navList.setAutoscrolls(true);
	}

	/*******************************************************************************************************************
	 * Устанавливает имя колонки навигации
	 ******************************************************************************************************************/
	@Override
	public void setColumnName(String theColumnName) {
		if (this.columnName != theColumnName) {
			super.setColumnName(theColumnName);
			this.navList.setColumnName(theColumnName);
			updateSelection();
		}
	}

	/*******************************************************************************************************************
	 * Устанавливает источник данных
	 ******************************************************************************************************************/
	@Override
	public void setDataSet(DataSet theDataset) {
		if (this.dataset != theDataset) {
			super.setDataSet(theDataset);
			this.navList.setDataSet(theDataset);
			updateSelection();
		}
	}

	/*******************************************************************************************************************
	 * Обновляет позицию курсора (добавляет функциональность реагирования JdbList)
	 ******************************************************************************************************************/
	private void updateSelection() {
		try {
			if (isValidDataSetState() && !this.dataset.isEmpty() && this.dataset.inBounds()) {
				int row = this.dataset.getRow();
				this.navList.setSelectedIndex(row);
				Rectangle r = this.navList.getCellBounds(row, row);
				if (r != null) this.navList.scrollRectToVisible(r);
			}
		} catch (Exception ex) {
			DicrExceptionHandler.handleException(ex, this);
		}
	}
}
